package se.stabby.undersok.model.statics;

import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import se.stabby.undersok.model.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

/**
 * User: per.segersten
 * Date: 2014-05-26
 */
public class SemesterUndersökningFabrik {

    private static volatile Map.Entry<UndersökningsId, Undersökning> INSTANCE_UNDERSÖKNING = null;
    private static Map.Entry<UndersökningsId, Tolkare> INSTANCE_TOLKARE = null;
    private static DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    private static LocalDateTime dateTime = LocalDate.parse("2014-05-26", pattern).atStartOfDay();
    private static Metadata metadata = new Metadata(dateTime, dateTime);

    private synchronized static void init() {
        KategoriUndersökningsBuilder builder = KategoriUndersökningsBuilder.create();
        builder.medTitel("Var jag ska resa på semester").
                medBeskrivning("Svara på några enkla frågor för att få tips var du kan åka på semster utifrån dina personliga önskemål.").
                medSvarskategori('A', "DDD", "EEE", "UUU", "PPP").
                medSvarskategori('B', "DDD", "EEE", "UUU", "PPP").
                medSvarskategori('C', "DDD", "EEE", "UUU", "PPP").
                medSvarskategori('D', "DDD", "EEE", "UUU", "PPP").
                medSvarskategori('E', "DDD", "EEE", "UUU", "PPP").
                medFråga("När du är på en lång sandstrand en solig dag vill du").
                medSvar('A', "Ligga i solstolen och slappa.").
                medSvar('B', "Leta efter snäckskal.").
                medSvar('C', "Jogga längs stranden.").
                medSvar('D', "Be personen bredvid smörja in solkräm på min rygg.").
                medSvar('E', "Sitta i skuggan och vill därifrån.").
                medMetaData(metadata).medId(StatiskUndersökning.SemsterId);

        Undersökning u = builder.buildUndersökning();
        Tolkare t = builder.buildTolkare();
        INSTANCE_UNDERSÖKNING = new AbstractMap.SimpleEntry<>(u.id, u);
        INSTANCE_TOLKARE = new AbstractMap.SimpleEntry<>(u.id, t);
    }

    public static Map.Entry<UndersökningsId, Tolkare> hämtaTolkare() {
        if (INSTANCE_TOLKARE==null) {
            init();
        }
        return INSTANCE_TOLKARE;
    }

    public static Map.Entry<UndersökningsId, Undersökning> hämtaUndersökning() {
        if (INSTANCE_UNDERSÖKNING==null) {
            init();
        }
        return INSTANCE_UNDERSÖKNING;
    }

}
